Field of the Invention
The present invention relates to the field of distributed computing and in particular, to apparatus, systems, and methods to deploy and run interactive desktop applications on distributed computing systems in a manner that facilitates remote user interaction with the deployed running application on the distributed computing system.
Description of Related Art
The performance of computing applications may often be increased by distributing the computational workload across nodes in a networked cluster of computers. A physical networked cluster of computers is often referred to as a “cloud” or “cloud infrastructure” or simply an infrastructure. Clouds often permit their underlying physical hardware, which can include servers, memory, storage, and network resources, to be viewed as virtualized units. These virtualized units represent some fraction of the underlying computing hardware or resources supported by the cloud. Therefore, from a logical perspective, clouds may be viewed as a collection of virtual machines (“VMs”). A “cloud node” or “node” may be responsible for the control and operation of one VM or some fraction of the VMs, and there may be several nodes per cloud. Typically, a cloud may provide a variety of VM types with different computing (CPU), memory, storage, networking, and Operating System (OS) options.
Clouds, thus, may be viewed as services that provide access to infrastructure remotely, including compute, storage and network resources, so that the resources can be reserved, provisioned, accessed and released programmatically. For example, programmatic interfaces such as Application Programming Interfaces (APIs), System Development Kits (SDKs), Web Services, etc. may be used to access resources made available by clouds remotely over a wide-area network (WAN). For example, in publicly available clouds or “public clouds”, these resources can be accessed programmatically over the Internet and are made available as VMs on a pay-per-use basis.
Cloud-computing infrastructures offer several benefits over fixed on-premise datacenters, server farms, desktop computers, etc (collectively referred to as “organizational infrastructure”) including: greater geographic and temporal availability because of access over the Internet and fault tolerance built into the infrastructure by providers; increased agility for deploying applications because of the availability of cloud resources as VMs and virtualization, which permits “snapshots” of VM images at a point in time and the ability to move the VMs to different physical machines; greater scalability because the large size of many cloud infrastructures typically permits both more resources per application and more applications at any given time; cost savings and infrastructural efficiency because organizational infrastructure can be optimized for typical business situations, while allowing large mission-critical applications to be run on public cloud infrastructures, which would be cost prohibitive for most organizations.
Although cloud computing has gained in popularity, users running traditional interactive desktop applications have often been limited to running the applications on the physical local machines on which the interactive desktop applications have been installed. Thus, users running traditional interactive desktop applications have hitherto been unable to take advantage of the flexibility, high availability and compute resources provided by clouds.
Therefore, there is a need for apparatus, systems, and methods to deploy and run interactive desktop applications on distributed computing infrastructures including clouds.